// merchandise.js
import api from '../../services/api'

Page({
  data: {
    isHeaderSticky: false,
    scrollTop: 0,
    currentCategory: 'all',
    currentSort: 'default',
    sortTypes: {
      'default': '默认排序',
      'price-asc': '价格从低到高',
      'price-desc': '价格从高到低',
      'popular': '人气优先'
    },
    products: [],
    loading: false,
    pageNo: 1,
    pageSize: 20,
    hasMore: true,
    searchContent: '',
    categories: [
      { value: 'all', label: '全部' }
    ],
    defaultImage: '/images/product-placeholder.png',
    showBackToTop: false, // 是否显示回到顶部按钮
  },
  
  onLoad() {
    // 获取商品分类
    this.fetchCategories();
    // 获取商品列表
    this.fetchProducts();
  },

  // 处理滚动事件
  onScroll(e) {
    const scrollTop = e.detail.scrollTop;
    const isHeaderSticky = scrollTop > 200; // 根据需要调整滚动阈值
    
    if (isHeaderSticky !== this.data.isHeaderSticky) {
      this.setData({
        isHeaderSticky
      });
    }

    // 控制回到顶部按钮显示
    const showBackToTop = scrollTop > 500;
    if (this.data.showBackToTop !== showBackToTop) {
      this.setData({ showBackToTop });
    }
  },

  // 获取分类标签
  fetchCategories() {
    this.setData({ loading: true });
    
    api.system.dictList('goods_type')
      .then(res => {
        console.log('商品分类数据:', res);
        if (res.status === 200 && res.data) {
          const categoriesFromApi = res.data.map(item => ({
            value: item.dictValue || item.value,
            label: item.dictLabel || item.label || item.name
          }));
          
          // 确保"全部"选项在最前面
          const categories = [{ value: 'all', label: '全部' }, ...categoriesFromApi];
          
          this.setData({
            categories: categories,
            loading: false
          });
        } else {
          wx.showToast({
            title: '获取分类失败',
            icon: 'none'
          });
          this.setData({ loading: false });
        }
      })
      .catch(err => {
        console.error('获取分类失败:', err);
        wx.showToast({
          title: '获取分类失败',
          icon: 'none'
        });
        this.setData({ loading: false });
      });
  },
  
  // 获取商品列表
  fetchProducts() {
    this.setData({ loading: true });
    
    const params = {
      pageNo: this.data.pageNo,
      pageSize: this.data.pageSize,
      order: this.data.currentSort === 'default' ? '' : this.data.currentSort
    };
    
    // 如果有搜索内容，添加到请求参数
    if (this.data.searchContent) {
      params.searchContent = this.data.searchContent;
    }
    
    // 如果选择了分类，添加到请求参数
    if (this.data.currentCategory !== 'all') {
      params.label = this.data.currentCategory;
    }
    
    api.merchandise.list(params)
      .then(res => {
        console.log('商品列表数据:', res);
        if (res.status === 200 && res.data) {
          // 处理商品数据
          const productList = res.data || [];
          productList.forEach(item => {
            // 处理封面图
            if (item.cover) {
              item.image = item.cover.startsWith('http') ? 
                item.cover : `https://${item.cover}`;
            } else {
              item.image = this.data.defaultImage;
            }
            
            // 处理标题
            item.title = item.productName || '';
            
            // 添加ID
            item.id = item.autoId;
            
            // 处理标签
            if (item.label) {
              item.tag = item.label.split(',')[0];
            }
            
            // 处理点赞数
            item.likes = item.likeNum || 0;
          });
          
          // 计算是否还有更多数据
          const hasMore = productList.length >= this.data.pageSize;
          
          // 更新UI数据
          this.setData({
            products: this.data.pageNo === 1 ? productList : [...this.data.products, ...productList],
            loading: false,
            hasMore: hasMore
          });
        } else {
          wx.showToast({
            title: '获取商品列表失败',
            icon: 'none'
          });
          this.setData({ loading: false });
        }
      })
      .catch(err => {
        console.error('获取商品列表失败:', err);
        wx.showToast({
          title: '获取商品列表失败',
          icon: 'none'
        });
        this.setData({ loading: false });
      });
  },
  
  // 设置分类
  setCategory(e) {
    const type = e.currentTarget.dataset.type;
    this.setData({
      currentCategory: type,
      pageNo: 1 // 重置页码
    });
    
    // 重新获取商品
    this.fetchProducts();
  },
  
  // 显示排序选项
  showSortOptions() {
    const sortList = Object.keys(this.data.sortTypes).map(key => {
      return {
        name: this.data.sortTypes[key],
        value: key
      };
    });
    
    wx.showActionSheet({
      itemList: sortList.map(item => item.name),
      success: (res) => {
        const selected = sortList[res.tapIndex].value;
        this.setData({
          currentSort: selected,
          pageNo: 1 // 重置页码
        });
        
        // 重新获取商品
        this.fetchProducts();
      }
    });
  },
  
  // 导航到商品详情
  navigateToProductDetail(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/merchandise/detail/index?id=${id}`
    });
  },
  
  // 搜索功能
  navigateToSearch() {
    wx.showModal({
      title: '搜索商品',
      editable: true,
      placeholderText: '请输入搜索关键词',
      success: (res) => {
        if (res.confirm && res.content) {
          this.setData({
            searchContent: res.content,
            pageNo: 1 // 重置页码
          });
          this.fetchProducts();
        }
      }
    });
  },
  
  // 下拉刷新
  onPullDownRefresh() {
    this.setData({
      pageNo: 1,
      hasMore: true
    });
    
    this.fetchProducts();
    wx.stopPullDownRefresh();
  },
  
  // 加载更多
  onReachBottom() {
    if (this.data.hasMore && !this.data.loading) {
      this.setData({
        pageNo: this.data.pageNo + 1
      });
      this.fetchProducts();
    }
  },

  // 分享给好友
  onShareAppMessage() {
  },

  // 分享到朋友圈
  onShareTimeline() {
  },

  // 滚动到顶部
  scrollToTop() {
    this.setData({ scrollTop: 0 });
  },
}) 